Skip to main content

Digital Signal Processing

OS: Ubuntu 20.04 LTS
Language: C

These were tested in the Socket Sever.

This relationships are used:

  • fs (Hz)= N ( )/ Dur (s), where N is number of samples and Dur is sampling period.

  • df (Hz) = fs (Hz) / N ( ) = 1 / Dur (s)

  • Need to check on the discrepency between the amplitude values of the FFT result

KissFFT

https://github.com/mborgerding/kissfft

Was initially used to test FFT on the recived data in the Socket Server

Calcualted FFT frequency values were correct.
Amplitude of the signals were of by about 10%.

kiss_fft

Liquid-DSP

https://liquidsdr.org/ FFT details: https://liquidsdr.org/doc/fft/

This is a C Library for DSP. Still being maintained.

Installation

  1. Verify the gcc and make versions. If they are not installed, follow the instrutcions in here

    whereis gcc make
    gcc --version
    make -v
  2. git clone https://github.com/jgaeddert/liquid-dsp.git in a directory like ~/git/public

  3. sudo apt-get install automake autoconf

  4. Go into the cloned directory and install the library.

     ./bootstrap.sh
    ./configure
    make
    sudo make install
    sudo ldconfig
  5. In your project compilation (gcc or Makefile), include -lliquid flag.

liquid fft result

CEEMDAN analysis

This is one of the features in Sensata's Machine Health Monitoring Solution and the paper A fault diagnosis method of rolling element bearings based on CEEMDAN

Empirical mode decomposition (EMD) is one of the most powerful signal processing techniques and has been extensively studied and widely applied in fault diagnosis of rotating machinery" [full text] One of the suggested methods from 'A fault diagnosis method of rollingelement bearings based on CEEMDAN': image

CEEDMAN stands for Complete Ensemble Empirical Mode Decomposition with Adaptive Noise

Check EEMD described in MATLAB documentation

libeemd, a C based EEMD library

We are using C based EEMD library, libeemd by Perttu Luukko to integrate CEEMDAN to our project.

It depends on GNU Scientific Library (GSL)

  1. Install GSL

    sudo apt-get install libgsl-dev
  2. Follow the instructions in libeemd readme to integrate it with C.

Example CEEMDAN output for sinusoidal signal:

CEEMDAN example

Grafana visualization grafana ceemdan on the sample sinusoidal

CEEMDAN decomposition example

Timedomain signal: Check the channel gz gz of timedomain CEEMDAN Components: Of channel gz CEEMDAN components

It seemes CEEMDAN decomposes the underlaying frequency components into the accurate timedomain signals

Possible alternatives

  1. FFT sample size and bin size https://dsp.stackexchange.com/questions/48216/understanding-fft-fft-size-and-bins

  2. Reducing number of FFT samples https://dsp.stackexchange.com/questions/17579/number-of-dft-fft-points-required-for-a-specific-frequency-resolution-for-an-o

Comparison between ESP_DSP and Liquid DSP

comparison between esp dsp and liquid dsp